package com.课上案例练习.线程.线程操作;

/**
 * 守护线程
 *垃圾回收线程
 *
 * 当非守护线程执行完毕之后，守护线程也会停止执行，但由于cpu运行速度过快，当用户线程执行完毕时，将信息传递给守护线程，会有点信息，
 * 使守护线程多执行一会
 *
 * 在所以普通线程执行完毕，守护线程不管有没有执行完，都会停止
 * java的垃圾回收的线程就是一个守护线程
 *
 * public final void setDaemon(boolean on)：设置线程是否为守护线程
 */
public class Test3 {

    public static void main(String[] args) {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i=0;i<2000;i++){
                    System.out.println("守护线程1: "+i);
                }
            }
        });


        //将t1设置为守护线程
        t1.setDaemon(true);
        Thread t2=new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i=0;i<1000;i++){

                    System.out.println("用户线程2: "+i);
                }
            }
        });

        Thread t3=new Thread(new Runnable() {
            @Override
            public void run() {
                for(int i=0;i<1000;i++){

                    System.out.println("用户线程3: "+i);
                }
            }
        });

        //开启三条线程,如果t2执行完毕,那么守护线程也会停止
        t1.start();
        t2.start();
        t3.start();
    }


}
